﻿Public Class FrmVaresalg
    Private kakeoppskrifter As New List(Of KakeOppskrift)
    Private uregistrerteKakepakker As New List(Of KakePakke)
    Private valgtKunde As New Kunde()

    Private valgtKake As KakeOppskrift
    Private ingrediensOgAntall As Dictionary(Of UInteger, UInteger)
    Private par As KeyValuePair(Of UInteger, UInteger)

    Private sum As Integer

    Private Sub FrmVaresalg_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        kakeoppskrifter = KakeOppskrift.FinnAlle()

        For Each k In kakeoppskrifter
            lbValgbareKaker.Items.Add(k.navn)
        Next

        valgtKunde = Form1.valgtKunde
        If valgtKunde Is Nothing Then
            txtVisValgtKunde.Text = "Ingen kunde er valgt"
        Else
            txtVisValgtKunde.Text = "Bestillingen gjelder kunde nr: " & valgtKunde.id & ", " & valgtKunde.fornavn & " " & valgtKunde.etternavn
        End If

    End Sub

    Private Sub lbValgbareKaker_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbValgbareKaker.SelectedIndexChanged
        Dim kakeNavn As String = lbValgbareKaker.SelectedItem.ToString()
        valgtKake = KakeOppskrift.FinnByNavn(kakeNavn)

        ingrediensOgAntall = valgtKake.FinnIngrediensOgAntall()

        Dim enIngrediens As Ingrediens
        Dim kakePrisTot As UInteger = 0

        txtBestillingsinfo.Text = "" 'fjærner tidliger valg/tekst

        txtBestillingsinfo.Text &= "......................................." & Environment.NewLine
        txtBestillingsinfo.Text &= "Kaken " & kakeNavn & " har følgende ingredienser:" & Environment.NewLine

        Dim par As KeyValuePair(Of UInteger, UInteger)
        For Each par In ingrediensOgAntall
            enIngrediens = Ingrediens.FinnById(par.Key)
            txtBestillingsinfo.Text &= "Ingrediens nr: " & par.Key & ", " & enIngrediens.navn & " med " & par.Value & " enheter. Pris pr enhet er kr " & enIngrediens.utsalgspris & ",- Sum kr " & (enIngrediens.utsalgspris * par.Value) & ",- " & Environment.NewLine
            kakePrisTot += (enIngrediens.utsalgspris * par.Value)
        Next
        txtBestillingsinfo.Text &= "Total pakke pris: " & kakePrisTot & ",-"
    End Sub


    Private Sub btnAddKakeTilBestilling_Click(sender As Object, e As EventArgs) Handles btnAddKakeTilBestilling.Click

        Dim enKakepakke As New KakePakke
        enKakepakke.kakeId = valgtKake.id
        enKakepakke.utsalgsPris = enKakepakke.beregnUtsalgsPris
        enKakepakke.innkjopsPris = enKakepakke.beregnInnkjopsPris
        enKakepakke.vasresalgId = 0 ' 0 indikerer at det ennå ikke er registrert et varesalg på dette i databasen
        uregistrerteKakepakker.Add(enKakepakke) ' disse kakepakkene har ennå ingen PK. Får nøkkel når vi dytter objektet i DB ...'AUTO_INC'

        txtOrdreliste.Text = ""
        Dim nr As Integer = 1
        sum = 0
        For Each kakePakke In uregistrerteKakepakker
            txtOrdreliste.Text &= "Nr " & nr & ". - " & KakeOppskrift.FinnById(kakePakke.kakeId).navn & " Pris: " & kakePakke.utsalgsPris & Environment.NewLine
            nr += 1
            sum += kakePakke.utsalgsPris
        Next

        txtSumTotal.Text = sum

        btnRegVaresalg.Enabled = True

    End Sub

    Private Sub btnRegVaresalg_Click(sender As Object, e As EventArgs) Handles btnRegVaresalg.Click

        Dim dagerTilLevering As Integer = 3

        Dim dagensDato As String = "" & Date.Now.Year & "-" & Date.Now.Month & "-" & Date.Now.Day & ""
        Dim leveringsDato As String = "" & Date.Now.Year & "-" & Date.Now.Month & "-" & Date.Now.AddDays(dagerTilLevering).Day & ""


        Dim nyttVaresalg As New Varesalg()
        nyttVaresalg.leveringsAdresse = ""
        Dim varesalgPK As Integer = nyttVaresalg.Lagre(valgtKunde.adresse, dagensDato, leveringsDato, "Bestilling mottatt", sum, valgtKunde.id, Form1.innloggetBruker.id, 0)

        For Each kp In uregistrerteKakepakker
            kp.Lagre(varesalgPK) 'her settes den inn som fremmednøkkel
        Next
        MsgBox("Varesalget er registrert.")
        Me.Close()
        Form1.valgtKunde = Nothing 'nullstiller tidligere valg
    End Sub

    
End Class